package com.bienvenue.main.ui.activity.enterprise;

import android.content.Intent;
import android.graphics.Color;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.afollestad.materialdialogs.MaterialDialog;
import com.bienvenue.main.R;
import com.bienvenue.main.base.BaseActivity;
import com.bienvenue.main.httpService.ResponseObserver;
import com.bienvenue.main.model.AddSubAccountModel;
import com.bienvenue.main.model.AreaTreeModel;
import com.bienvenue.main.model.HttpBean;
import com.bienvenue.main.model.InformationPerfectionModel;
import com.bienvenue.main.model.JobPostModel;
import com.bienvenue.main.serviceApi.ServiceModel;
import com.bienvenue.main.utils.SPUtils;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.google.gson.Gson;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.OnClick;

/**
 * 　　　　　　　 ┏┓       ┏┓+ +
 * 　　　　　　　┏┛┻━━━━━━━┛┻┓ + +
 * 　　　　　　　┃　　　　　　 ┃
 * 　　　　　　　┃　　　━　　　┃ ++ + + +
 * 　　　　　　 █████━█████  ┃+
 * 　　　　　　　┃　　　　　　 ┃ +
 * 　　　　　　　┃　　　┻　　　┃
 * 　　　　　　　┃　　　　　　 ┃ + +
 * 　　　　　　　┗━━┓　　　 ┏━┛
 * ┃　　  ┃
 * 　　　　　　　　　┃　　  ┃ + + + +
 * 　　　　　　　　　┃　　　┃　Code is far away from     bug with the animal protecting
 * 　　　　　　　　　┃　　　┃ + 　　　　         神兽保佑,代码无bug
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┃　　+
 * 　　　　　　　　　┃　 　 ┗━━━┓ + +
 * 　　　　　　　　　┃ 　　　　　┣┓
 * 　　　　　　　　　┃ 　　　　　┏┛
 * 　　　　　　　　　┗┓┓┏━━━┳┓┏┛ + + + +
 * 　　　　　　　　　 ┃┫┫　 ┃┫┫
 * 　　　　　　　　　 ┗┻┛　 ┗┻┛+ + + +
 * 版权：陇朝赢科技有限公司 版权所有
 *
 * @author 18592
 * 版本：
 * 创建日期：2020/10/20
 * 描述：企业信息完善
 * ClassName：InformationPerfectionActivity
 * PackageName:com.bienvenue.main.ui.activity.enterprise
 */
public class InformationPerfectionActivity extends BaseActivity {
    @BindView(R.id.tv_enterprise_scale)
    TextView tvEnterpriseScale;
    @BindView(R.id.tv_nature_of_enterprise)
    TextView tvNatureOfEnterprise;
    @BindView(R.id.tv_industry)
    TextView tvIndustry;
    @BindView(R.id.tv_post_img_path)
    TextView tvPostImgPath;
    @BindView(R.id.et_address)
    EditText etAddress;

    @BindView(R.id.tv_post)
    TextView tvPost;

    File file;
    String avatarUrl;

    String tvEnterpriseScaleId, tvNatureOfEnterpriseId, tvIndustryId, companyId;
    List<String> stringList = new ArrayList<>();
    String id;

    @Override
    protected void initData() {
    }

    @Override
    protected void initView() {

    }

    @Override
    protected int getLayoutId() {
        return R.layout.activity_information_perfection;
    }

    @OnClick(R.id.iv_return_btn)
    void onFinish() {
        this.finish();
    }

    @Override
    protected void onResume() {
        super.onResume();
        companyId = SPUtils.getString("userId");
        ServiceModel.getServiceModel().getInformationPerfection(companyId, new ResponseObserver<InformationPerfectionModel>() {
            @Override
            public void onSuccess(InformationPerfectionModel response) {
                if (response.getCode() == 200 || response.getCode() == 0) {
                    showToast(response.getMsg());
                    if (response.getData() != null && !TextUtils.isEmpty(response.getData().getId())) {
                        id = response.getData().getId();
                    }
                    return;

                } else {
                    showLog(response.getMsg());
                }
            }

            @Override
            public void onFail(String message) {
                showLog(message);

            }
        });

    }

    @OnClick(R.id.tv_enterprise_scale)
    void onEnterpriseScale() {
        ServiceModel.getServiceModel().getListByCompanySize(new ResponseObserver<JobPostModel>() {
            @Override
            public void onSuccess(JobPostModel response) {
                if (response.getCode() == 200) {

                    if (stringList != null && stringList.size() > 0) {
                        stringList.clear();
                    }
                    for (int i = 0; i < response.getData().size(); i++) {
                        stringList.add(response.getData().get(i).getVal());
                    }
                    OptionsPickerView pvOptions = new OptionsPickerBuilder(InformationPerfectionActivity.this, new OnOptionsSelectListener() {
                        @Override
                        public void onOptionsSelect(int options1, int options2, int options3, View v) {
                            //返回的分别是三个级别的选中位置
                            if (response.getData().get(options1).getVal().equals(stringList.get(options1))) {
                                tvEnterpriseScaleId = response.getData().get(options1).getId();
                            }
                            tvEnterpriseScale.setText(stringList.get(options1));
                        }
                    })
                            .setTitleText("请选择企业规模")
                            .setDividerColor(Color.BLACK)
                            .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
                            .setContentTextSize(20)
                            .build();
                    pvOptions.setPicker(stringList);
                    pvOptions.show();
                } else {
                    showToast(response.getMsg());
                }
            }

            @Override
            public void onFail(String message) {
                showLog(message);
            }
        });
    }

    @OnClick(R.id.tv_nature_of_enterprise)
    void onNatureOfEnterprise() {

        ServiceModel.getServiceModel().getListByTypeCompanyNature(new ResponseObserver<JobPostModel>() {
            @Override
            public void onSuccess(JobPostModel response) {
                if (response.getCode() == 200) {

                    if (stringList != null && stringList.size() > 0) {
                        stringList.clear();
                    }
                    for (int i = 0; i < response.getData().size(); i++) {
                        stringList.add(response.getData().get(i).getVal());
                    }
                    OptionsPickerView pvOptions = new OptionsPickerBuilder(InformationPerfectionActivity.this, new OnOptionsSelectListener() {
                        @Override
                        public void onOptionsSelect(int options1, int options2, int options3, View v) {
                            //返回的分别是三个级别的选中位置
                            if (response.getData().get(options1).getVal().equals(stringList.get(options1))) {
                                tvNatureOfEnterpriseId = response.getData().get(options1).getId();
                            }
                            tvNatureOfEnterprise.setText(stringList.get(options1));
                        }
                    })
                            .setTitleText("请选择企业性质")
                            .setDividerColor(Color.BLACK)
                            .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
                            .setContentTextSize(20)
                            .build();
                    pvOptions.setPicker(stringList);
                    pvOptions.show();
                } else {
                    showToast(response.getMsg());
                }
            }

            @Override
            public void onFail(String message) {
                showLog(message);
            }
        });


    }

    @OnClick(R.id.tv_industry)
    void onIndustry() {
        ServiceModel.getServiceModel().getListByTypeIndustry(new ResponseObserver<JobPostModel>() {
            @Override
            public void onSuccess(JobPostModel response) {
                if (response.getCode() == 200) {

                    if (stringList != null && stringList.size() > 0) {
                        stringList.clear();
                    }
                    for (int i = 0; i < response.getData().size(); i++) {
                        stringList.add(response.getData().get(i).getVal());
                    }
                    OptionsPickerView pvOptions = new OptionsPickerBuilder(InformationPerfectionActivity.this, new OnOptionsSelectListener() {
                        @Override
                        public void onOptionsSelect(int options1, int options2, int options3, View v) {
                            //返回的分别是三个级别的选中位置
                            if (response.getData().get(options1).getVal().equals(stringList.get(options1))) {
                                tvIndustryId = response.getData().get(options1).getId();
                            }
                            tvIndustry.setText(stringList.get(options1));
                        }
                    })
                            .setTitleText("请选择所属行业")
                            .setDividerColor(Color.BLACK)
                            .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
                            .setContentTextSize(20)
                            .build();
                    pvOptions.setPicker(stringList);
                    pvOptions.show();
                } else {
                    showToast(response.getMsg());
                }
            }

            @Override
            public void onFail(String message) {
                showLog(message);
            }
        });
    }

    @OnClick(R.id.tv_post_img)
    void onPostImg() {
        PictureSelector.create(InformationPerfectionActivity.this)
                .openGallery(PictureMimeType.ofImage())// 全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
                .maxSelectNum(1)// 最大图片选择数量
                .minSelectNum(1)// 最小选择数量
                .imageSpanCount(4)// 每行显示个数
                .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选PictureConfig.MULTIPLE : PictureConfig.SINGLE
                .previewImage(true)// 是否可预览图片
                .isCamera(true)// 是否显示拍照按钮
                .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
                //.setOutputCameraPath("/CustomPath")// 自定义拍照保存路径
                .enableCrop(false)// 是否裁剪
                .compress(true)// 是否压缩
                //.sizeMultiplier(0.5f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
                .glideOverride(160, 160)// glide 加载宽高，越小图片列表越流畅，但会影响列表图片浏览的清晰度
                .withAspectRatio(1, 1)// 裁剪比例 如16:9 3:2 3:4 1:1 可自定义
                //.selectionMedia(selectList)// 是否传入已选图片
                //.previewEggs(false)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中)
                //.cropCompressQuality(90)// 裁剪压缩质量 默认100
                //.compressMaxKB()//压缩最大值kb compressGrade()为Luban.CUSTOM_GEAR有效
                //.compressWH() // 压缩宽高比 compressGrade()为Luban.CUSTOM_GEAR有效
                //.cropWH()// 裁剪宽高比，设置如果大于图片本身宽高则无效
                .rotateEnabled(false) // 裁剪是否可旋转图片
                //.scaleEnabled()// 裁剪是否可放大缩小图片
                //.recordVideoSecond()//录制视频秒数 默认60s
                .forResult(PictureConfig.CHOOSE_REQUEST);//结果回调onActivityResult code
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        List<LocalMedia> images = null;
        if (resultCode == RESULT_OK) {
            if (requestCode == PictureConfig.CHOOSE_REQUEST) {// 图片选择结果回调


                images = PictureSelector.obtainMultipleResult(data);
                file = new File(images.get(0).getPath());
                Log.e("TAG", "imgPath=>>>>" + file.getAbsolutePath());
                //selectList = PictureSelector.obtainMultipleResult(data);

                // 例如 LocalMedia 里面返回三种path
                // 1.media.getPath(); 为原图path
                // 2.media.getCutPath();为裁剪后path，需判断media.isCut();是否为true
                // 3.media.getCompressPath();为压缩后path，需判断media.isCompressed();是否为true
                // 如果裁剪并压缩了，以取压缩路径为准，因为是先裁剪后压缩的
                if (file == null && TextUtils.isEmpty(file.getAbsolutePath())) {
                    showToast("请重新选择图片");
                }
                MaterialDialog dialog = initDialog("请稍后...");


                dialog.show();
                ServiceModel.getServiceModel().setImg(file.getAbsolutePath(), new ResponseObserver<HttpBean>() {
                    @Override
                    public void onSuccess(HttpBean response) {
                        if (response.getCode() == 200) {
                            Log.e("TAG", "上传成功");
                            avatarUrl = response.getData().toString();
                            dialog.dismiss();
                            tvPostImgPath.setText(response.getData().toString());

                        } else {
                            showToast("请重新确认图片格式");
                            dialog.dismiss();
                        }
                    }

                    @Override
                    public void onFail(String message) {
                        Log.e("TAG", message);
                        dialog.dismiss();
                    }
                });

            }
        }
    }

    @OnClick(R.id.tv_save_btn)
    void onSave() {
        if ("请选择企业规模".equals(tvEnterpriseScale.getText().toString().trim())) {
            showToast("请选择企业规模");
            return;
        } else if ("请选择企业性质".equals(tvNatureOfEnterprise.getText().toString().trim())) {
            showToast("请选择企业性质");
            return;
        } else if ("请选择所属行业".equals(tvIndustry.getText().toString().trim())) {
            showToast("请选择所属行业");
            return;
        } else if (TextUtils.isEmpty(etAddress.getText().toString().trim()) || "".equals(etAddress.getText().toString().trim())) {
            showToast("请输入公司地址");
            return;
        } else if ("未上传".equals(tvPostImgPath.getText().toString().trim())) {
            showToast("请选择企业LOGO");
            return;
        }

        HttpBean.ParamRegisterBean bean = new HttpBean.ParamRegisterBean();
        bean.setCompany_scale(tvEnterpriseScaleId);
        bean.setCompany_industry(tvIndustryId);
        bean.setCompany_logo(avatarUrl);
        bean.setCompany_nature(tvNatureOfEnterpriseId);
        bean.setCompany_id(companyId);
        bean.setAddress(etAddress.getText().toString().trim());
        bean.setId(id);
        String json = new Gson().toJson(bean);
        showLog(json);
        ServiceModel.getServiceModel().putInformationPerfection(bean, new ResponseObserver<HttpBean>() {
            @Override
            public void onSuccess(HttpBean response) {
                if (response.getCode() == 200) {
                    showToast(response.getMsg());
                    InformationPerfectionActivity.this.finish();
                } else {
                    showToast(response.getMsg());
                }
            }

            @Override
            public void onFail(String message) {
                showLog(message);
            }
        });


    }

    List<AreaTreeModel.DataBean> options1Items = new ArrayList<>();
    ArrayList<ArrayList<String>> options2Items = new ArrayList<>();
    ArrayList<ArrayList<ArrayList<String>>> options3Items = new ArrayList<>();


    @OnClick(R.id.tv_post)
    void onPost() {
        ServiceModel.getServiceModel().getTreeArea(new ResponseObserver<AreaTreeModel>() {
            @Override
            public void onSuccess(AreaTreeModel response) {
                if (response.getCode() == 0 || response.getCode() == 200) {
                    if (options1Items != null && options1Items.size() > 0) {
                        options1Items.clear();
                    }
                    if (options2Items != null && options2Items.size() > 0) {
                        options2Items.clear();
                    }
                    if (options3Items != null && options3Items.size() > 0) {
                        options3Items.clear();
                    }
                    options1Items.addAll(response.getData());
                    for (int i = 0; i < response.getData().size(); i++) {//遍历省份
                        ArrayList<String> cityList = new ArrayList<>();//该省的城市列表（第二级）
                        ArrayList<ArrayList<String>> province_AreaList = new ArrayList<>();//该省的所有地区列表（第三极）

                        for (int c = 0; c < response.getData().get(i).getChildren().size(); c++) {//遍历该省份的所有城市
                            String cityName = response.getData().get(i).getChildren().get(c).getTitle();
                            cityList.add(cityName);//添加城市
                            ArrayList<String> city_AreaList = new ArrayList<>();//该城市的所有地区列表
                            for (AreaTreeModel.DataBean.ChildrenBeanX.ChildrenBean bean : response.getData().get(i).getChildren().get(c).getChildren()) {
                                city_AreaList.add(bean.getTitle());
                                province_AreaList.add(city_AreaList);//添加该省所有地区数据
                            }

                        }

                        /**
                         * 添加城市数据
                         */
                        options2Items.add(cityList);

                        /**
                         * 添加地区数据
                         */
                        options3Items.add(province_AreaList);
                    }

                    OptionsPickerView pvOptions = new OptionsPickerBuilder(InformationPerfectionActivity.this, new OnOptionsSelectListener() {
                        @Override
                        public void onOptionsSelect(int options1, int options2, int options3, View v) {
                            String opt1tx = options1Items.size() > 0 ?
                                    options1Items.get(options1).getPickerViewText() : "";

                            String opt2tx = options2Items.size() > 0
                                    && options2Items.get(options1).size() > 0 ?
                                    options2Items.get(options1).get(options2) : "";

                            String opt3tx = options2Items.size() > 0
                                    && options3Items.get(options1).size() > 0
                                    && options3Items.get(options1).get(options2).size() > 0 ?
                                    options3Items.get(options1).get(options2).get(options3) : "";

                            String tx = opt1tx + opt2tx + opt3tx;

                        }
                    })

                            .setTitleText("城市选择")
                            .setDividerColor(Color.BLACK)
                            .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
                            .setContentTextSize(20)
                            .build();

        /*pvOptions.setPicker(options1Items);//一级选择器
        pvOptions.setPicker(options1Items, options2Items);//二级选择器*/
                    pvOptions.setPicker(options1Items, options2Items, options3Items);//三级选择器
                    pvOptions.show();
                }
            }

            @Override
            public void onFail(String message) {

            }
        });
    }

}
